1. Field of the Invention
The present invention relates to data compression devices, and more specifically to the data compression controllers communicating between a host system and external devices.
2. Art Background
As the sophistication of computer systems increases so does the need for manipulation of large amounts of data generated by the computer systems. Data compression is often used to minimize the size of certain data while maintaining the information contained therein. Data compression is also typically utilized to minimize the bandwidth of data transmitted or stored. Prior to transmission or storage, the data are compressed. The data are subsequently decompressed after transmission or after the data are retrieved from storage.
For example, it has become more and more common to create back-up memory storage on external storage devices for the main memory of a computer system. The hard disk drive in a personal computer system is often periodically backed up to an external tape drive. To maximize tape usage, the data from the hard disk drive are compressed before the data are subsequently loaded onto the tape drive. FIG. 1 illustrates a functional configuration for a memory backup system 1. Hard disk drive 11 and system random-access memory (RAM) 12 are typically configured with the host computer system CPU 13, while compressor (comp/de-comp) 15 is typically located on a separate card inserted into a slot on the bus. The CPU 13 controls the process. Under control of the CPU 13, the data stored in hard disk drive 11 are first transferred, through system bus 10, to RAM 12. The CPU 13 then forwards the data located in RAM 12 to comp/de-comp 15 which compresses the data. The CPU 13 causes compressed data to be stored again in RAM 12 before subsequently transferring the data to tape drive 14. Tape drive 14 is typically a streaming device with its efficiency dependent upon the continuity of data flow. Note that tape drive 14 is typically connected to the host computer system through a device bus, such as SCSI bus 16. Loading compressed data from tape drive 14 requires the same process in reverse with the de-compressor feature of comp/decomp 15. As can be appreciated by those skilled in the art, the back-up process is a slow and time-consuming due to the multiple bus transactions required for each data storage and data retrieval.
Because the data stored in hard disk drive 11 are almost always in different format, e.g. bit maps, spreadsheets, windows, and texts, etc., different compression ratios are applied by comp/decomp 15 as different data files are compressed. As a result, during a back-up process of various files from hard disk drive 11, tape drive 14 ends up in a stop-and-go state because the difference in compression ratios prevents the CPU 13 from providing a continuous stream of data to comp/decomp 15 and to tape drive 14. Furthermore, the back-up process requires the constant intervention from the CPU 13, thus diverting the CPU 13 from its other processing tasks. The conventional approach has therefore been found to be quite inefficient in terms of both processor and tape drive usage.
In addition, because compressed and decompressed data must be buffered through system RAM 12, the capacity of system RAM 12 directly affects the data through-put as more and more system-oriented software of a computer system, such as operating systems and network applications, must be stored in system RAM 12. The amount of memory in RAM 12 for compression and decompression storage may not be able to keep up with data flow, resulting in a slow down of the process and more frequent intervention by CPU 13 to facilitate the transfer of data which quickly fill the capacity of the buffers in RAM 12.
One alternative is to provide an on-board compression engine with each external or storage device (e.g. tape drive 14) to minimize the number of bus transactions and the frequency of CPU 13 involvement. However, this is not a practical option because of the increased cost of configuring a compression sub-system with each storage device. Furthermore the addition of hardware compression may not be possible with many existing external devices.
Therefore, it is desirable to have a data compression device capable of interfacing to a multiplicity of storage devices without continuous intervention by the host system.